Typical graphics processors are equipped with both vertex and pixel shaders for determining surface properties of vertices and pixels (or fragments, etc.), respectively. There has been a recent trend of equipping both vertex and pixel shaders with common functionality.
For example, one operation typically reserved for pixel shaders is the retrieval of texture information from memory for texturing a pixel surface, etc. Recently, however, vertex shaders have been equipped with similar functionality, namely vertex texture retrieval operations (e.g. “vertex texture fetches,” etc.). Unfortunately, such vertex texture retrieval operations are inherently less efficient than accessing texture information using the pixel shader. This is due, at least in part, to the fact that local partial derivatives typically associated with a width of a desired texture access are unknown in advance of pixel processing.
In other words, vertex-related data is typically “wild” in that there is not necessarily any intrinsic coherence between vertices during processing. To this end, each vertex texture retrieval operation typically must provide arbitrarily-determined partial derivatives for the associated retrieval. Further, due to the aforementioned lack of coherence, an associated texturing system can not always benefit from caching texture results for later reuse. Such features have a possible net effect of a significant lag (e.g. numerous clock cycles, etc.) for each vertex texture retrieval operation.
There is thus a need for overcoming these and/or other problems associated with the prior art.